package com.rd.util;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 统一返回结果，针对业务层的所有方法实现都返回该对象
 */
@Data
@Accessors(chain = true)  //开启链式编程
public class R {

    /**
     * 状态码，为0表示成功状态
     */
    private Integer code;
    /**
     * 附加文本信息
     */
    private String msg;
    /**
     * 是否成功,执行结果反馈，true:成功；false:失败
     */
    private boolean success;
    /**
     * 附加数据（例如:当前成功登录的用户，歌曲列表数据等）
     */
    private Object data;
    /**
     * 数据总条数,附加数据若为列表则返回总数据条数，用于前端分页")
     */
    private Long count;

    /**
     * 封装统一成功返回结果
     *
     * @return
     */
    public static R ok() {
        R r = new R();
        r.code = 0;
        r.msg = "操作成功";
        r.success = true;
        return r;
    }

    /**
     * 封装统一失败返回结果
     *
     * @return
     */
    public static R fail() {
        R r = new R();
        r.code = -1;
        r.msg = "操作失败";
        return r;
    }

    public static R fail(String msg) {
        R r = new R();
        r.code = -1;
        r.msg = msg;
        return r;
    }

}
